/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package comandos.Sel;
import entidades.Voo;
import entidades.Cidade;
import entidades.Aeroporto;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
import erros.ErroPersistencia;
import java.util.ArrayList;
/**
 *
 * @author thiagostuckert
 */
public class CmdSelVoohasAeroporto extends CmdSel {

    /**
     *
     * @param voo Voo a ser procurado para a posterior montagem do objeto.
     * @param isPartida variavel que indica se o aeroporto procurado é o de
     * partida ou o de chegada.
     */
    public CmdSelVoohasAeroporto(final Voo voo, final boolean isPartida) {
        comandoSQL = "SELECT codigoAeroporto, nomeCidade FROM aeroporto a,"
                + " voo_has_aeroporto h, voo v "
                + " WHERE a.codigoAeroporto = h.codigoAeroporto "
                + " and v.numeroVoo = h.numeroVoo "
                + " and h.numeroVoo = '" + voo.getNumeroVoo()
                + "' and h.isPartida = " + isPartida + ";";
    }

   /***
    * Executa o comando no banco de dados.
    * @param conexao conexao com o banco de dados.
    * @throws erros.ErroPersistencia erro lançado caso a
    * execução não obtenha sucesso.
    */
    @Override
    public final Object executar(final Connection conexao)
            throws ErroPersistencia {
        try {
            Statement st = conexao.createStatement();
            ResultSet rs = st.executeQuery(comandoSQL);
            rs.next();
            Cidade cidade = new Cidade(rs.getString("nomeCidade"));
            Aeroporto aeroporto = new Aeroporto(
                    rs.getString("codigoAeroporto"));

            ArrayList lista = new ArrayList();
            lista.add(cidade);
            lista.add(aeroporto);
            return lista;
        } catch (SQLException e){
            throw new ErroPersistencia("Erro na execucao do comando SQL");
        }
    }
}
